home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 51 / Amiga Format CD51 (2000-03-10)(Future Publishing)(GB)[!][issue 2000-04].iso / -in_the_mag- / pdselect / awnp / awnp-docs / demos / host.rx < prev    next >
Text File  |  2000-02-16  |  2KB  |  86 lines

  1. /*
  2. Arexx Host demo for AWNPipe
  3. William H.M Parker 03 Aug 1999
  4.  
  5. At first glance writing an arexx host in Arexx looks redundant, but is
  6. actualy a great way to have different scripts comunicate with each other.
  7. AWNPipe can be used from 'C' or other languages to easily add an
  8. Arexx host to your aplications as well.
  9.  */
  10.  
  11. trace('E')
  12.  
  13. call buildgui
  14. /*loop untill the user closes window*/
  15. do while ~eof(ca)
  16. /* start the pipe events */
  17. call topipe("con")
  18.  
  19. /*parse an event from the pipe*/
  20. parse value readln(ca) with in in1 in2 in3 in4 .
  21. if in='arexx' then call rxevent()
  22.  
  23. end
  24.  
  25. /*user must have closed window because eof has been received*/
  26. exit
  27.  
  28.  
  29. buildgui:
  30. call open(ca,"awnpipe://xc")
  31. /* modify is turned on se we can send results back from arexx commands*/
  32. call topipe(' " Arexx Host" defg m v ')
  33.  
  34. /* this line is the whole host definition ! */
  35. call topipe('arexx  gt "TESTHOST|author|date|add|quit"')
  36.  
  37. /* some info for the user*/
  38. call topipe('label gt "*n  Host name  TESTHOST  *n *n"')
  39. call topipe('label gt " Available commands"')
  40. call topipe('label gt "  Author"')
  41. call topipe('label gt "  Date"')
  42. call topipe('label gt "  ADD number number"')
  43. call topipe('label gt "  Quit"')
  44.  
  45. /*open the window*/
  46. call topipe("open")
  47. return
  48.  
  49. rxevent:
  50. /* read the actual comannd string */
  51. parse value readch(ca,in2) with in3 in4 in5 .
  52.  
  53. /*handle the command*/
  54. if in1=0 then call topipe('result "William H. M. Parker"')
  55.  
  56. if in1=1 then call topipe('result "'date()'"')
  57.  
  58. if in1=2 then do
  59. if (datatype(in4,'N') & datatype(in5,'N')) then
  60. call topipe('result "'in4+in5'"')
  61. else call topipe('rc 10')
  62. end
  63.  
  64. if in1=3 then do
  65. call topipe('result "exiting"')
  66. exit
  67. end
  68.  
  69.  
  70. return
  71.  
  72. topipe:
  73. /* this routine does error checking on lines written to pipe.*/
  74.  
  75. parse arg out
  76.  
  77. /* write to the pipe*/
  78. call writeln(ca,out)
  79.  
  80. /* make sure it worked ok */
  81. if left(readln(ca),2)='ok' then return(0)
  82.  
  83. /* we exit if something went wrong, we should realy notify the user...*/
  84. exit
  85.  
  86.